#include <bits/stdc++.h>
using namespace std;
using uint=unsigned int;
using ll=long long;
using ull=unsigned long long;
using i128=__int128;
const int N=1e6+5;

int n;
vector<bool> used;
bool res=false;

bool check(int x){
    if(x<=1)return false;
    if(x==2)return true;
    if(x%2==0)return false;
    for(int i=3;i<=sqrt(x);i+=2){
        if(x%i==0)return false;
    }
    return true;
}

void dfs(int x,vector<int> path){
    if(x>n){
        if(check(path[1]+path[n])){
            res=true;
            for(int i=1;i<=n;i++){
                if(i==1)cout<<path[i];
                else cout<<" "<<path[i];
            }
        cout<<endl;
        }
        return;
    }
    for(int i=2;i<=n;i++){
        if(check(path[x-1]+i)&&!used[i]){
            path[x]=i;
            used[i]=true;
            dfs(x+1,path);
            used[i]=false;
        }
    }
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    cin>>n;
    vector<int> path(n+1,0);
    path[1]=1;
    used.assign(n+1,false);
    dfs(2,path);
    if(!res)cout<<"0"<<endl;

    return 0;
}


// 题目：素数环
// 描述：
// 输入正整数 n，把整数1,2,…,n 组成一个环，使得相邻两个整数之和均为素数。输出时，从整数11开始逆时针排列。
// 同一个环恰好输出一次。n≤16。如果没有符合条件的输出，则输出0.
// 输入样例
// 6 
// 输出样例
// 1 4 3 2 5 6
// 1 6 5 2 3 4